package br.com.iswe.gwt.util.client;

import com.google.gwt.user.client.ui.TextBox;

public class RangeNumberValidator extends BaseValidator {


	private TextBox valorInicio;
	private TextBox valorFim;
	private String labelValorInicio;
	private String labelValorFim;
	
	public RangeNumberValidator(String nome, String labelValorInicio, String labelValorFim, TextBox valorInicio, TextBox valorFim) {
		super(nome, null, null);
		this.valorInicio = valorInicio;
		this.valorFim = valorFim;
		this.labelValorInicio = labelValorInicio;
		this.labelValorFim = labelValorFim;
	}

	protected boolean validateImpl() {
		//verifica se os dois valores estao vazias
		if(isEmpty( valorInicio.getText() ) && isEmpty( valorFim.getText() ) ){
			//caso as duas sejam vazias
			return true;
		}
		//verifica se algum dos valores esta vazio
		if(isEmpty( valorInicio.getText() )){
			//Apenas a data de inicio esta vazia
			notValid(valorInicio, commonMessages.msgRangeValorInvalido(labelValorInicio, labelValorFim));
			return false;
		}
		if(isEmpty( valorFim.getText() )){
			//Apenas a data de fim esta vazia
			notValid(valorFim, commonMessages.msgRangeValorInvalido(labelValorInicio, labelValorFim));
			return false;
		}
		
		//verifica se sao validas
		if(! ClientUtils.isNumberValue(valorInicio.getText()) ||  ! ClientUtils.isNumberValue(valorFim.getText())){
			//caso algum dos valores nao sejam validos
			return false;
		}
		
		double lValorInicio = ClientUtils.getDouble(valorInicio.getText());
		double lValorFim = ClientUtils.getDouble(valorFim.getText());
		
		boolean result = lValorInicio <= lValorFim;
		if(result){
			valid(valorInicio);
			valid(valorFim);
		}
		else{
			notValid(valorInicio, commonMessages.msgRangeValorInvalido(labelValorInicio, labelValorFim));
			notValid(valorFim, commonMessages.msgRangeValorInvalido(labelValorInicio, labelValorFim));
		}
		return  result;//retorna valido caso o valor inicio seja menor ou igual valor fim.
	}

}
